/**
 * 优惠码管理
 */
var queryCouponCodeSearch = function() {
	var queryCouponCodeFieldSet = new Ext.form.FieldSet({
				id : 'queryCouponCodeFieldSet',
				title : '查询条件',
				collapsible : true,// 可折叠
				buttonAlign : 'center',
				keys : [{
							key : 13, // 13代表回车
							fn : queryCouponCode,
							scope : this
						}],
				items : [{
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'numberfield',
											anchor : '100%',
											fieldLabel : '优惠码开始编号',
											name : "startId",
											allowDecimals : false,// 禁用小数
											allowNegative : false, // 禁用负数
											minValue : 1
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'numberfield',
											anchor : '100%',
											fieldLabel : '优惠码结束编号',
											name : "endId",
											allowDecimals : false,// 禁用小数
											allowNegative : false, // 禁用负数
											minValue : 1
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									xtype : "datefield",
									id : "couponManager_couponBeginDate",
									name : "couponBeginDate",
									fieldLabel : "有效开始时间",
									width : 175,
									editable : false,
									format : "Y-m-d",
									listeners : {
										'select' : function() {
											Ext
													.getCmp('couponManager_couponEndDate')
													.setMinValue(this
															.getValue());
										}
									}
								}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									xtype : "datefield",
									id : "couponManager_couponEndDate",
									name : "couponEndDate",
									fieldLabel : "有效结束时间",
									width : 175,
									editable : false,
									format : "Y-m-d",
									listeners : {
										'select' : function() {
											Ext
													.getCmp('couponManager_couponBeginDate')
													.setMaxValue(this
															.getValue());
										}
									}

								}]
							}]
				}, {
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'textfield',
											anchor : '100%',
											fieldLabel : '优惠码',
											name : "couponCode"
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'dataDictionaryCmb',
											anchor : '100%',
											fieldLabel : "优惠码状态",
											editable : false,
											autoLoad : false,
											existall : true,
											defaultFirstRow : 1,
											hiddenName : 'couponStatus',
											dictionaryType : PmsUtil.user_coupon_status
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									xtype : 'localcommonbox',
									anchor : '100%',
									fieldLabel : '是否可用',
									editable : false,
									hiddenName : "isEnable",
									loaclarr : [['0', '可用'], ['1', '不可用'],
											['', '全部']],
									value : 0
								}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											anchor : '100%',
											fieldLabel : '规则组',
											hiddenName : 'ruleGroupId',
											xtype : 'ruleGroupCmb',
											allowBlank : true,
											showValue : true,
											existall : true
										}]
							}]
				}, {
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'textfield',
											anchor : '100%',
											fieldLabel : '优惠码名称',
											name : "couponCodeName"
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									xtype : 'localcommonbox',
									anchor : '100%',
									fieldLabel : "优惠码类型",
									hiddenName : "couponType",
									loaclarr : [['0', '普通码'], ['1', 'B2B码'],
											['2', 'Online-Coupon'], ['', '全部']]
								}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									layout : 'column',
									border : false,
									items : [{
												text : '查询',
												xtype : 'button',
												width : 70,
												handler : function() {
													queryCouponCode();
												},
												style : {
													marginLeft : "100px",
													marginRight : "10px"
												}
											}, {
												text : '重置',
												xtype : 'button',
												width : 70,
												handler : function() {
													querycouponCodeForm
															.getForm().reset();
												}
											}]
								}]
							}]
				}]
			});
	fieldSetListeners(['queryCouponCodeFieldSet', 'querycouponCodeForm',
					'couponCodeManagerGrid'], [0.23, 0.77]);

	var querycouponCodeForm = new Ext.form.FormPanel({
				id : 'querycouponCodeForm',
				anchor : '100% 23%',
				frame : true,
				labelAlign : 'right',
				bodyBorder : false,
				items : [queryCouponCodeFieldSet]
			});
	return querycouponCodeForm;
};

/**
 * grids
 */
var couponCodeManagerGrid = function() {
	var couponCodeManagerSm = new Ext.grid.CheckboxSelectionModel({
				checkOnly : true,
				renderer : function(v, p, record) {
					var couponStatus = record.get('couponStatus');
					if (couponStatus == 0) {
						return '<div class="x-grid3-row-checker">&#160;</div>';
					} else {
						return '';
					}
				},
				listeners : {
					beforerowselect : function(SelectionModel, rowIndex,
							keepExisting, record) {
						var couponStatus = record.get('couponStatus');
						if (couponStatus == 0) {
							return true;
						} else {
							return false;
						}
					}
				}

			});// 创建选择模式对象
	var couponCodeManagerCm = new Ext.grid.ColumnModel([couponCodeManagerSm,
			new Ext.grid.RowNumberer(), {
				dataIndex : "id",
				header : "优惠码编号",
				sortable : true,
				width : 70
			}, {
				dataIndex : "couponCodeName",
				header : "优惠码名称",
				sortable : true,
				width : 120,
				renderer : function(value, meta, record) {
					if (value) {
						meta.attr = 'ext:qtitle="优惠码名称:" ext:qtip="' + value
								+ '"';
						return value;
					}
				}
			}, {
				dataIndex : "couponCode",
				header : "优惠码",
				sortable : true,
				width : 90,
				renderer : function(value, meta, record) {
					if (value) {
						meta.attr = 'ext:qtitle="优惠码:" ext:qtip="' + value
								+ '"';
						return value;
					}
				}
			}, {
				dataIndex : "ruleGroupName",
				header : "规则组",
				sortable : true,
				width : 120,
				renderer : function(value, meta, record) {
					if (value) {
						meta.attr = 'ext:qtitle="规则组:" ext:qtip="' + value
								+ '"';
						return value;
					}
				}
			}, {
				dataIndex : "couponBeginDate",
				header : "有效开始时间",
				sortable : true,
				width : 90,
				renderer : function(date) {
					return Ext.util.Format.substr(date, 0, 10);
				}
			}, {
				dataIndex : "couponEndDate",
				header : "有效结束时间",
				sortable : true,
				width : 90,
				renderer : function(date) {
					return Ext.util.Format.substr(date, 0, 10);
				}
			}, {
				dataIndex : "isSingleUser",
				header : "是否单次使用",
				sortable : true,
				width : 80,
				renderer : function(value) {
					return PmsUtil.IsSingleUser(value);
				}
			}, {
				dataIndex : "couponType",
				header : "优惠码类型",
				sortable : true,
				width : 80,
				renderer : function(value) {
					return PmsUtil.isCouponType(value);
				}
			}, {
				dataIndex : "couponStatus",
				header : "优惠码状态",
				sortable : true,
				width : 70,
				renderer : function(value) {
					return PmsUtil.CouponStatus(value);
				}
			}, {
				dataIndex : "isEnable",
				header : "是否可用",
				sortable : true,
				width : 70,
				renderer : function(value) {
					return PmsUtil.FixingIsEnable(value);
				}
			}, {
				dataIndex : "salesName",
				header : "销售人员",
				sortable : true,
				width : 80
			}, {
				dataIndex : "createdDate",
				header : "创建时间",
				sortable : true,
				width : 130
			}, {
				dataIndex : "createdName",
				header : "创建人",
				sortable : true,
				width : 60
			}, {
				dataIndex : "updatedDate",
				header : "修改时间",
				sortable : true,
				width : 130
			}, {
				dataIndex : "updatedName",
				header : "修改人",
				sortable : true,
				width : 60
			}, {
				header : "管理",
				width : 100,
				dataIndex : "id",
				sortable : false,
				renderer : function(j, i, g, m, h) {
					var l = g.data.id;
					var k = "";
					if (isGranted("couponManager_编辑")) {
						k += '&nbsp;&nbsp;<a href="#" onclick="updCouponManager('
								+ l + ')\">编辑</a>';
					}
					return k;
				}
			}]);

	// 定义分析器
	var couponCodeManagerGrid = new Ext.data.JsonReader({
				totalProperty : "totalCount",
				root : "list",
				fields : [{
							name : "id"
						}, {
							name : "ruleGroupId"
						}, {
							name : "ruleGroupName"
						}, {
							name : "couponCodeName"
						}, {
							name : "couponBeginDate"
						}, {
							name : "couponEndDate"
						}, {
							name : "enjoyOtherActivtity"
						}, {
							name : "isSingleUser"
						}, {
							name : "couponStatus"
						}, {
							name : "isEnable"
						}, {
							name : "couponType"
						}, {
							name : "createdDate"
						}, {
							name : "createdName"
						}, {
							name : "updatedDate"
						}, {
							name : "updatedName"
						}, {
							name : "couponCode"
						}, {
							name : "salesName"
						}]
			});

	// 取数据store
	var couponCodeViewStore = new Ext.data.Store({
				autoLoad : true,// 要加载数据必须设置为true
				proxy : new Ext.data.HttpProxy({
							url : __ctxPath + "/couponManager/selectCoupon"
						}),
				remoteSort : false,
				baseParams : {
					start : 0,
					limit : 25
				},
				listeners : {
					beforeload : {
						fn : function(thiz, options) {
							Ext.apply(thiz.baseParams, Ext
											.getCmp('querycouponCodeForm')
											.getForm().getValues());
						}
					}
				},
				reader : couponCodeManagerGrid
			});

	// 定义grid的toolbar
	var couponCodeTb = new Ext.Toolbar({
				height : 25,
				items : []
			});
	couponCodeTb.add(new Ext.scm.Button({
				text : "优惠码添加",
				width : 80,
				pressed : true,
				hsValue : 'couponManager_优惠码添加',
				iconCls : "btn-add",
				listeners : {
					"click" : function() {
						addCoupon();
					}
				}
			}));
	couponCodeTb.add(new Ext.Toolbar.Spacer());
	couponCodeTb.add(new Ext.scm.Button({
				text : "优惠码激活",
				width : 80,
				pressed : true,
				hsValue : 'couponManager_优惠码激活',
				iconCls : "btn-edit",
				listeners : {
					"click" : function() {
						activatedCoupon();
					}
				}
			}));
	couponCodeTb.add(new Ext.Toolbar.Spacer());
	couponCodeTb.add(new Ext.scm.Button({
				text : "导出excel",
				iconCls : "btn-excel",
				width : 80,
				pressed : true,
				hsValue : "couponManager_批量导出",
				listeners : {
					"click" : function() {
						exportCouponsToExcel();
					}
				}
			}));

	couponCodeTb.add(new Ext.Toolbar.Spacer());
	couponCodeTb.add(new Ext.scm.Button({
				text : "刷 新",
				iconCls : "btn-refresh",
				width : 80,
				hsValue : 'couponManager_刷新',
				pressed : true,
				handler : function() {
					queryCouponCode();
				}
			}));

	var couponCodeManagerGrid = new Ext.grid.GridPanel({
				id : 'couponCodeManagerGrid',
				store : couponCodeViewStore,
				cm : couponCodeManagerCm,
				sm : couponCodeManagerSm,
				autoScroll : true,
				loadMask : true,
				stripeRows : true,
				columnLines : true,
				loadMask : {
					msg : "正在加载数据，请稍侯……"
				},
				viewConfig : {
					emptyText : '没有您想要的数据!'
				},
				anchor : '100% 77%',
				frame : true,
				tbar : couponCodeTb,
				bbar : new PG.PagingBar({
							id : 'CouponCodeGridPage',
							store : couponCodeViewStore,
							isShowTwoHunder : true
						})
			});
	return couponCodeManagerGrid;
};

// 查询
function queryCouponCode() {
	if (Ext.getCmp('querycouponCodeForm').getForm().isValid()) {
		var grid = Ext.getCmp('couponCodeManagerGrid');
		var store = grid.store;
		var pagesize = Ext.getCmp('CouponCodeGridPage').pageSize;
		store.load({
					params : {
						start : 0,
						limit : pagesize
					}
				});
	}
}

// 添加优惠码
function addCoupon() {
	try {
		addOrUpdCouponWin(null, "添加优惠码").show();
	} catch (Error) {
		Ext.Loader.load([__ctxPath + '/js/coupon/couponForm.js'], function() {
					addOrUpdCouponWin(null, "添加优惠码").show();
				});
	}
}

// 编辑优惠码
function updCouponManager(id) {
	try {
		addOrUpdCouponWin(id, "编辑优惠码").show();
	} catch (Error) {
		Ext.Loader.load([__ctxPath + '/js/coupon/couponForm.js'], function() {
					addOrUpdCouponWin(id, "编辑优惠码").show();
				});
	}
}

// 批量导出优惠码
function exportCouponsToExcel() {
	var grid = Ext.getCmp("couponCodeManagerGrid");
	var modiRecords = grid.getSelectionModel().getSelections();
	if (modiRecords.length == 0) {
		Ext.MessageBox.show({
					title : '提示',
					msg : '至少勾选一条需要导出的数据',
					buttons : Ext.MessageBox.OK,
					icon : Ext.MessageBox.WARNING
				});
		return;
	};
	var arr = [];
	var temrecord = new Ext.data.Record();
	for (var i = 0; i < modiRecords.length; i++) {
		var temrecord = new Ext.data.Record();
		temrecord.set('couponCodeName', modiRecords[i].data.couponCodeName);
		temrecord.set('couponCode', modiRecords[i].data.couponCode);
		temrecord.set('couponBeginDate', Ext.util.Format.substr(
						modiRecords[i].data.couponBeginDate, 0, 10));
		temrecord.set('couponEndDate', Ext.util.Format.substr(
						modiRecords[i].data.couponEndDate, 0, 10));
		arr.push(temrecord.data);
	}
	var jsonList = Ext.encode(arr);
	jsonList = Ext.util.Format.htmlDecode(jsonList).trim();
	Ext.Msg.confirm("信息确认", "是否批量导出优惠码数据？", function(btn) {
				if (btn == 'yes') {
					document.location.href = __ctxPath
							+ "/couponManager/exportCouponsToExcel?jsonList="
							+ jsonList;
				}

			});

};
/**
 * 优惠码激活
 */
function activatedCoupon() {
	var grid = Ext.getCmp("couponCodeManagerGrid");
	var modiRecords = grid.getSelectionModel().getSelections();
	if (modiRecords.length == 0) {
		Ext.MessageBox.show({
					title : '提示',
					msg : '请选择要要激活的优惠码!',
					buttons : Ext.MessageBox.OK,
					icon : Ext.MessageBox.WARNING
				});
		return;
	};
	var couponIds = "";
	for (var i = 0; i < modiRecords.length; i++) {
		var rec = modiRecords[i];
		if (rec.get("couponStatus") == 0 && rec.get("isEnable") == 1) {
			couponIds += rec.data.id + ",";
		} else {
			Ext.MessageBox.show({
						title : "错误提示",
						msg : "优惠码编号为<span style='color:#F00'>" + rec.get("id")
								+ "</span>不符合激活条件!",
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.WARNING
					});
			return;
		}
	}
	if (couponIds.length > 0) {
		couponIds = couponIds.substring(0, couponIds.length - 1);
	} else {
		Ext.MessageBox.show({
					title : '提示',
					msg : '请选择要要激活的优惠码!',
					buttons : Ext.MessageBox.OK,
					icon : Ext.MessageBox.WARNING
				});
		return;
	}
	// 优惠券激活信息填写
	activatedCouponHandleWindows(couponIds).show();
}

function activatedCouponHandleWindows(couponIds) {
	var activatedCouponHandleForm = new Ext.FormPanel({
				id : "activatedCouponHandleForm",
				frame : true,
				bodyBorder : false,
				defaults : {
					anchor : "100%,100%"
				},
				defaultType : "textfield",
				items : [{
							name : "couponIds",
							xtype : "hidden",
							value : couponIds
						}, {
							xtype : 'localcommonbox',
							anchor : '100%',
							fieldLabel : "<span style='color:#F00'>*</span>优惠码类型",
							hiddenName : "couponType",
							allowBlank : false,
							loaclarr : [['0', '普通码'], ['1', 'B2B码'],
									['2', 'Online-Coupon']]
						}, {
							xtype : 'localcommonbox',
							anchor : '100%',
							fieldLabel : "<span style='color:#F00'>*</span>销售人员",
							hiddenName : "salesName",
							allowBlank : false,
							loaclarr : [['王智', '王智'], ['徐敏', '徐敏'],['祝家康', '祝家康'],['R','R']]
						}, {
							xtype : "datefield",
							name : "couponEndDate",
							fieldLabel : "有效结束时间",
							width : 175,
							editable : false,
							format : "Y-m-d"
						}]
			});
	var activatedCouponHandleWindow = new Ext.Window({
		id : "activatedCouponHandleWindow",
		title : "优惠码类型信息",
		width : 300,
		height : 170,
		closable : true,
		modal : true,
		layout : "fit",
		autoDestroy : true,
		draggable : false, // 不可拖动
		resizable : false, // 不可调整
		plain : true,
		buttonAlign : "center",
		items : activatedCouponHandleForm,
		buttons : [{
			text : "确定",
			width : 60,
			handler : function() {
				var activatedForm = activatedCouponHandleForm.getForm();
				if (activatedForm.isValid()) {
					Ext.Msg.confirm("信息确认", "您确定要所选的优惠码激活？", function(c) {
						if (c == "yes") {
							activatedForm.submit({
								url : __ctxPath
										+ "/couponManager/updateActivatedCoupon",
								method : "post",
								waitTitle : "请稍后",
								waitMsg : "正在提交数据...",
								success : function(response, options) {
									var jsonData = Ext.util.JSON
											.decode(options.response.responseText);
									Ext.MessageBox.show({
												title : "信息提示",
												msg : jsonData.data,
												buttons : Ext.MessageBox.OK,
												icon : Ext.MessageBox.INFO
											});
									queryCouponCode();
									activatedCouponHandleWindow.close();
								},
								failure : function(response, options) {
									var jsonData = Ext.util.JSON
											.decode(options.response.responseText);
									Ext.MessageBox.show({
												title : "操作信息",
												msg : jsonData.data,
												buttons : Ext.MessageBox.OK,
												icon : Ext.MessageBox.ERROR
											});
								}
							});
						}
					})
				}
			}
		}, {
			text : "取消",
			width : 60,
			handler : function() {
				activatedCouponHandleWindow.close();
			}
		}]
	});
	return activatedCouponHandleWindow;
};

Ext.getCmp("centerTabPanel").getActiveTab().add(queryCouponCodeSearch(),
		couponCodeManagerGrid());
Ext.getCmp("centerTabPanel").getActiveTab().doLayout();
